I started working through the Unity Angry Birds tutorial, and ran into some problems with the mouse. Really, though, it turned out to be an error between chair and keyboard while trying to re-implement the csharp tutorial code in fsharp.
At first attempt, this line looked like it should be changed from this
Vector2 catapultToMouse = mouseWorldPoint - catapult.position;
to this:
let catapultToMouse = mouseWorldPoint - catapult.position
The problem with is that now, 'catapultToMouse' becomes a Vector3. The caused problems latter on when 'catapultToMouse.sqrMagnitude' had an unexpected value. I fixed this with a helper function that converts a Vector3 to a Vector2:
let catapultToMouse = Vec32(mouseWorldPoint - catapult.position)
The other issue I ran into was my code was not deetecting a null value for a unity component. It turns out to be a known issue F# null test fails to detect null values
After these two issues were resolved, I was able to get the demo working. And finally, to enable touch support on Android, I added this code to the end of the Update method:
if Input.touchCount > 0 then
match Input.GetTouch(0).phase with
| TouchPhase.Began -> this.OnMouseDown()
| TouchPhase.Ended -> this.OnMouseUp()
| TouchPhase.Canceled -> this.OnMouseUp()
| _ -> ()
The entire project is located here
The informative and unique text will be https://rankmywriter.com/gonerdify-com-review adapted for you by a truly qualified writer. Our ghostwriters would prepare the science work listening to your expectations and requirements.
ReplyDelete