Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by Aechen · Jun 30, 2017 at 08:42 PM · collisionmovementlocalpositionswordlocal space

How do I move an object on only two axis locally?

Hi, I am currently creating a VR fighting system, and I am currently trying to handle collision with swords. When a sword collides with an enemy, it should do a slashing motion like in real life, meaning it should only move in the direction of either side of the blade, where the blade is sharp, and in or out of the enemy. It should not be able to move along the flat side of the blade, since it realistically wouldn't be able to. How would I go about locking movement to only two axis? I have been able to lock the movement to to axis globally, but it's unlikely that a sword will slash the enemy at a perfect 90 degree angle, therefore I need to be able to move the sword on the axis locally. Here is the script I have written so far (in full):

 private Vector3 entryVector;
     private Vector3 slashVector;
 
     private float lockXRotation;
     private float lockYRotation;
     private float lockZRotation;
 
     private bool enteredEnemy = false;
     private bool readyToAttack = false;
 
     [SerializeField]
     private Collider physicalBlade;
 
     [SerializeField]
     private Collider triggerBlade;
 
     private Component[] weaponColliders;
 
     private Rigidbody rb;
 
     private void Start()
     {
         weaponColliders = GetComponentsInChildren<BoxCollider>();
         rb = GetComponent<Rigidbody>();
     }
 
     private void Update()
     {
         if (enteredEnemy)
         {
             slashVector = new Vector3(transform.position.x, entryVector.y, transform.position.z);
             readyToAttack = true;
         }
         else
         {
             readyToAttack = false;
             slashVector = transform.localPosition;
         }
 
         if (enteredEnemy && readyToAttack)
         {
             transform.position = slashVector;
         }
         else
         {
             transform.localPosition = transform.localPosition;
         }
 
         if (GetComponentInChildren<RealisticMeleeBehaviourBladeTrigger>().bladeColliding)
         {
             transform.Find("PhysicalBlade").GetComponent<Collider>().enabled = false;
             SetEntryVector();
         }
         else
         {
             transform.Find("PhysicalBlade").GetComponent<Collider>().enabled = true;
             enteredEnemy = false;
         }
     }
 
     private void SetEntryVector()
     {
         enteredEnemy = true;
         entryVector = transform.position;
     }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

118 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Enemy direction going crazy after collision 1 Answer

Need some help programming basic AI movement 0 Answers

Realistic Soccer VR 2 Answers

Unexisting blocks colliding and existing block not colliding 1 Answer

Colliders "offset" and going down too. 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges